﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Configuration;

namespace ProcessoSeletivo.DAO
{
    public class DadosCandidato : IDisposable
    {
        #region " Listar "

        public DataView ListarDadosCandidatoPorCurso(int cod_curso_cur)
        {
            DataSet lRetorno = new DataSet();
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ListarDadosCandidatoPorCurso", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                sqlc.Parameters.AddWithValue("@cod_curso_cur", cod_curso_cur);

                SqlDataAdapter sqa = new SqlDataAdapter(sqlc);
                sqa.Fill(lRetorno, "tb_pse_dados_candidato");
                sql.Close();
            }
            return lRetorno.Tables[0].DefaultView;
        }

        public DataView ListarDadosCandidatoPorCandidato(int cod_candidato_can)
        {
            DataSet lRetorno = new DataSet();
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ListarDadosCandidatoPorCandidato", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                sqlc.Parameters.AddWithValue("@cod_candidato_can", cod_candidato_can);

                SqlDataAdapter sqa = new SqlDataAdapter(sqlc);
                sqa.Fill(lRetorno, "tb_pse_dados_candidato");
                sql.Close();
            }
            return lRetorno.Tables[0].DefaultView;
        }

        public DataView ListarRelatorioDadosCandidatoPorFiltro(string des_processo_pro, int tip_processo_pro, string des_curso_cur, string des_turno_cur, int flg_aprovado_can, int flg_isento_ins)
        {
            DataSet lRetorno = new DataSet();
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ListarRelatorioDadosCandidatoPorFiltro", sql);
                sqlc.CommandType = CommandType.StoredProcedure;
                
                if (des_processo_pro != "-1")
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", des_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", DBNull.Value);
                }

                if (tip_processo_pro > -1)
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", tip_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", DBNull.Value);
                }

                if (des_curso_cur != "-1")
                {
                    sqlc.Parameters.AddWithValue("@des_curso_cur", des_curso_cur);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@des_curso_cur", DBNull.Value);
                }

                if (des_turno_cur != "-1")
                {
                    sqlc.Parameters.AddWithValue("@des_turno_cur", des_turno_cur);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@des_turno_cur", DBNull.Value);
                }

                if (flg_aprovado_can > -1)
                {
                    sqlc.Parameters.AddWithValue("@flg_aprovado_can", flg_aprovado_can);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@flg_aprovado_can", DBNull.Value);
                }

                if (flg_isento_ins > -1)
                {
                    sqlc.Parameters.AddWithValue("@flg_isento_ins", flg_isento_ins);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@flg_isento_ins", DBNull.Value);
                }

                SqlDataAdapter sqa = new SqlDataAdapter(sqlc);
                sqa.Fill(lRetorno, "tb_pse_dados_candidato");
                sql.Close();
            }
            return lRetorno.Tables[0].DefaultView;
        }

        public DataView ListarRelatorioDadosCandidatoInscritosPorFiltro(string des_processo_pro, int tip_processo_pro)
        {
            DataSet lRetorno = new DataSet();
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ListarRelatorioDadosCandidatoInscritosPorFiltro", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                if (des_processo_pro != "-1")
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", des_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", DBNull.Value);
                }

                if (tip_processo_pro > -1)
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", tip_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", DBNull.Value);
                }

                SqlDataAdapter sqa = new SqlDataAdapter(sqlc);
                sqa.Fill(lRetorno, "tb_pse_dados_candidato");
                sql.Close();
            }
            return lRetorno.Tables[0].DefaultView;
        }

        public DataView ListarBoletosDadosCandidatoPorFiltro(string des_processo_pro, int tip_processo_pro, int flg_pago_bol, int cod_inscricao_ins)
        {
            DataSet lRetorno = new DataSet();
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ListarBoletosDadosCandidatoPorFiltro", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                if (des_processo_pro != "-1")
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", des_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@des_processo_pro", DBNull.Value);
                }

                if (tip_processo_pro > -1)
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", tip_processo_pro);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@tip_processo_pro", DBNull.Value);
                }

                if (flg_pago_bol > -1)
                {
                    sqlc.Parameters.AddWithValue("@flg_pago_bol", flg_pago_bol);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@flg_pago_bol", DBNull.Value);
                }

                if (cod_inscricao_ins > 0)
                {
                    sqlc.Parameters.AddWithValue("@cod_inscricao_ins", cod_inscricao_ins);
                }
                else
                {
                    sqlc.Parameters.AddWithValue("@cod_inscricao_ins", DBNull.Value);
                }

                SqlDataAdapter sqa = new SqlDataAdapter(sqlc);
                sqa.Fill(lRetorno, "tb_pse_dados_candidato");
                sql.Close();
            }

            return lRetorno.Tables[0].DefaultView;
        }

        #endregion

        #region " Incluir "

        public void IncluirDadosCandidato(int cod_curso_cur, int cod_candidato_can, int cod_processo_pro, int cod_inscricao_ins, int num_opcao_dca)
        {
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("IncluirDadosCandidato", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                sqlc.Parameters.AddWithValue("@cod_curso_cur", cod_curso_cur);
                sqlc.Parameters.AddWithValue("@cod_candidato_can", cod_candidato_can);
                sqlc.Parameters.AddWithValue("@cod_processo_pro", cod_processo_pro);
                sqlc.Parameters.AddWithValue("@cod_inscricao_ins", cod_inscricao_ins);
                sqlc.Parameters.AddWithValue("@num_opcao_dca", num_opcao_dca);

                sqlc.ExecuteNonQuery();
                sql.Close();
            }
        }

        #endregion

        #region " Excluir "

        public void ExcluirDadosCandidatoPorCandidato(int cod_candidato_can)
        {
            using (SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["StringConexao"].ToString()))
            {
                sql.Open();
                SqlCommand sqlc = new SqlCommand("ExcluirDadosCandidatoPorCandidato", sql);
                sqlc.CommandType = CommandType.StoredProcedure;

                sqlc.Parameters.AddWithValue("@cod_candidato_can", cod_candidato_can);
                sqlc.ExecuteNonQuery();

                sql.Close();
            }
        }

        #endregion

        #region " Dipose "

        public void Dispose()
        {
            GC.SuppressFinalize(this);
        }

        #endregion
    }
}
